package main

import (
	"fmt"
)

func main() {

	var a = 10
	switch a {
	case 1:
		fmt.Println("1")
		break // go语言保留了break关键字，跳出switch循环， 不写默认包含
	case 2:
		fmt.Println("2")
	case 10:
		fmt.Println("10")
	case 11:
		fmt.Println("11")
	default:
		fmt.Println("xxx")
	}

	// 反面案例
	//var b bool
	//
	//switch b {
	//case a > 1:
	//	fmt.Println("go")
	//	break
	//default:
	//	fmt.Println("xxx")

	//}

	switch {
	case a > 1:
		fmt.Println("大于1")
	case a > 2:
		fmt.Println("大于2")
	case a == 10:
		fmt.Println("再来一遍")
	default:
		fmt.Println("默认选择")
	}

	// case 支持多个
	var marks int = 90
	var grade string = "B"
	switch marks {
	case 90:
		grade = "A"
	case 80:
		grade = "B"
	case 50, 60, 70:
		grade = "C"
	default:
		grade = "D"
	}
	fmt.Println("grade: ", grade)

	// 使用 fallthrough 会强制执行后面的 case 语句，fallthrough 不会判断下一条 case 的表达式结果是否为 true。
	switch {
	case false:
		fmt.Println("1、case 条件语句为 false")
		fallthrough
	case true:
		fmt.Println("2、case 条件语句为 true")
		fallthrough
	case false:
		fmt.Println("3、case 条件语句为 false")
		fallthrough
	case true:
		fmt.Println("4、case 条件语句为 true")
	case false:
		fmt.Println("5、case 条件语句为 false")
		fallthrough
	default:
		fmt.Println("6、默认 case")
	}
	/*	2、case 条件语句为 true
		3、case 条件语句为 false
		4、case 条件语句为 true*/

	// 可以初始化一个变量
	switch score := 85; score {
	case 90:
		fmt.Println("嘿嘿")
	case 85:
		fmt.Println("哈哈")
	}

}
